package com.heima.leetcode.practice;

/**
 * @author 勾新杰
 * @version 1.0
 * @description leetcode 223. 矩形面积
 * @date 2025/10/23 12:34
 */
public class E223 {

    /**
     * 计算两个矩形的面积，并计算两个矩形相交的面积
     * @param ax1 第一个矩形的左上角x坐标
     * @param ay1 第一个矩形的左上角y坐标
     * @param ax2 第一个矩形的右下角x坐标
     * @param ay2 第一个矩形的右下角y坐标
     * @param bx1 第二个矩形的左上角x坐标
     * @param by1 第二个矩形的左上角y坐标
     * @param bx2 第二个矩  形的右下角x坐标
     * @param by2 第二个矩形的右下角y坐标
     * @return 两个矩形的面积和两个矩形相交的面积
     */
    public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        // 1. 计算两个矩形的面积
        int areaA = (ax2 - ax1) * (ay2 - ay1);
        int areaB = (bx2 - bx1) * (by2 - by1);
        // 2. 计算两个矩形相交的面积
        int left = Math.max(ax1, bx1); // 重叠区域左边
        int down = Math.max(ay1, by1); // 重叠区域下边
        int right = Math.min(ax2, bx2); // 重叠区域右边
        int up = Math.min(ay2, by2); // 重叠区域上边

        int overlap = 0;
        // 如果重叠区域有效，计算重叠区域的面积
        if (down < up && left < right) {
            overlap = (up - down) * (right - left);
        }
        // 3. 计算两个矩形的总面积
        return areaA + areaB - overlap;
    }
}
